package com.ocom.webapi.service;


import com.ocom.common.request.web.*;
import com.ocom.common.resp.Result;
import com.ocom.common.vo.*;
import com.ocom.common.vo.webapi.UpdateAccessVo;
import com.ocom.webapi.vo.access.AccessDeviceResetVo;
import org.springframework.web.multipart.MultipartFile;

import java.util.Map;
public interface AccessService {

    /**
     * 区域新增
     * */
    public Result AreaPageAdd(AddAreaVo addAreaVo);


    /**
     * 区域修改
     * */
    public Result AreaPageModify(ModifyAreaVo modifyAreaVo);


    /**
     * 区域删除
     * */
    public Result AreaPageDelete(DelAreaVo delAreaVo);

    /**
     * 区域管理列表（AreaPage/onShow）
     * */
    public Result AreaPageOnShow(AreaVo areaVo);


    /**
     * 门禁设备列表（/AccessDevice/onShow）
     * */
    public Result AccessDeviceOnShow(DeviceOnShowVo deviceOnShowVo);

    /**
     * 门禁设备新增（/AccessDevice/add）
     * */
    public Result AccessDeviceAdd(AccessDeviceVo accessDeviceVo);


    /**
     * 门禁设备修改（AccessDevice/modify）
     * */
    public Result AccessDeviceModify(AccessDeviceVo accessDeviceVo);

    /**
     * 门禁设备区域设置（AccessDevice/setArea）
     * */
    public Result AccessDeviceSetArea(SetAreaVo setAreaVo);


    /**
     * 门禁设备删除（AccessDevice/delete）
     * */
    public Result AccessDeviceDelete(AccessDeviceVo accessDeviceVo);


    /**
     * 门禁设备列表（AccessDevice/allOnShow）
     * */
    public Result AccessDeviceAllOnShow(AllOnShowVo allOnShowVo);

    /*
     * @Description:人员门禁权限列表
     * @Author: lu 
     * @Date: 2022/1/12 13:06
     * @param getAccessByUserRequest:  
     * @return: com.ocom.common.resp.Result
     **/
    Result getAccessByUser(GetAccessByUserRequest getAccessByUserRequest);

    /*
     * @Description:人员门禁权限新增/修改
     * @Author: lu 
     * @Date: 2022/1/13 8:51
     * @param getAccessRequest:  
     * @return: com.ocom.common.resp.Result
     **/
    Result setAccessAdd(GetAccessRequest getAccessRequest);

    /*
     * @Description:获取时区列表
     * @Author: lu 
     * @Date: 2022/1/13 10:41
     * @param comId:  
     * @return: com.ocom.common.resp.Result
     **/
    Result getZoneList(Long comId);

    Result getZoneDateList(GetZoneDateListRequest getZoneDateListRequest);

    /**
     * 导入机器（AccessDevice/importDevice）
     * */
    public Result AccessDeviceImportDevice(Long comId,Long deviceType, MultipartFile file) throws Exception;

    /**
     * 设置日期时区
     * */
    Result setDateZoneAdd(SetDateZoneRequest setDateZoneRequest);

    /*
     * @Description:删除日期时区
     * @Author: lu 
     * @Date: 2022/1/14 16:43
     * @param removeDateZoneRequest:  
     * @return: com.ocom.common.resp.Result
     **/
    Result removeDateZone(RemoveDateZoneRequest removeDateZoneRequest);

    /*
     * @Description:2.5.3.4.区域权限组列表（AccessControlPerson/groupList）
     * @Author: lu
     * @Date: 2022/1/18 15:18
     * @param map:
     * @return: com.ocom.common.resp.Result
     **/
    Result getGroupListByArea(Map<String, String> map);

    /**获取区域信息*/
    public Result AccessGetAreaInfo(Long comId,Integer regionId);


    /**
     * 区域权限列表 （AccessControlPerson/getAreaGroupList）
     * */
    public Result AccessControlPersonGetAreaGroupList(Long companyId);

    /**
     * 重置设备白名单（AccessDevice/reset）
     * */
    public Result AccessDeviceReset(AccessDeviceResetVo accessDeviceResetVo);


    public Result updateUserAccess(UpdateAccessVo updateAccessVo);


    public Result importAreaAccess(Long comId, Long areaNo,Integer type,MultipartFile file);

}
